#ifndef GAMEOBJECT_H
#define GAMEOBJECT_H

#include "hgeSprite.h"
#include "hgevector.h"
#include "BoundingCircle.h"
#include <map>

class hgeAnimation;

class GameObject
{
public:
	GameObject();
	virtual ~GameObject();

	//Gets
	hgeSprite* GetSprite() const;
	hgeVector GetPos() const;
	BoundingCircle GetBoundingCircle() const;
	hgeVector GetDimensions() const;
	hgeAnimation* GetAnimation(int a_key) const;

	//Sets
	void SetPos(hgeVector a_pos);
	void SetPos(float a_xPos, float a_yPos);
	void SetSubRect(float a_x, float a_y, float a_width, float a_height);
	void SetCenter(float a_x, float a_y);
	void SetVelocity(hgeVector a_vel);
	void SetSpeed(float a_speed);
	void SetBoundingCircle(BoundingCircle a_circle);

	virtual bool CreateObject(char* a_pSpriteName, int a_width, int a_height);
	virtual bool Update(float a_dt);
	virtual void Render();
	virtual void Kill();

protected:
	hgeVector m_pos;
	hgeVector m_vel;
	hgeVector m_dimensions;
	float m_speed; // remove
	BoundingCircle m_boundingCircle;
	hgeSprite* m_pSprite;
	std::map<int, hgeAnimation*> m_animations;

private:
	HTEXTURE m_hTexture;
};

#endif //GAMEOBJECT_H